from flask import Flask, json , request, render_template, make_response,jsonify
from datetime import datetime
from flask.sessions import NullSession

from werkzeug.wrappers import response
from . import app


# 结果的字典
result={'MISS':1,'WRONG':2,'SUCCESS':3,'ATTENDED':4}


# 定义与数据库有关的函数
def Find(var):
    #不全，添加数据库比对函数
    return result['SUCCESS']

def return_Question(str):
    data={
    'id':00000,
    'question':'discription',
    'options':{
        '1':'',
        '2':''}
        }
    return data

def exam_Qid():
    return True

def get_answer(id):
    result_this_question={
        'answer':'FILL IT'
    }
    return result_this_question

def get_grade(data):
    grade='100'
    return grade

#检验cookie以获得用户登录状态
def check_cookie():
    cookie_1 = request.cookies.get("account")
    if cookie_1 == None:
        return render_template('login.html') #若cookie中无数据，则返回登陆界面(也许是login.html)

# 路由定义
#检查是否登陆成功
#POST：一卡通号，密码
@app.route("/login/check",methods=['POST'])
def check():
    request_data = request.get_data().decode('utf-8')		# 解析json前进行编码.不然出来的结果并不是中文的..
    data=json.loads(request_data)
    #检测输入数据完整性
    if data["account"]== None or data["password"]== None:
        return make_response("缺少有效输入信息")
    #检测输入数据有效性
    if  data["account"].isdigit():
        if(len(data["account"]) != 9):
            return make_response("请输入正确有效信息")
    else:
        return make_response("请输入正确有效信息")
    #进行数据库比对
    condition=Find(data)
    if condition==result['SUCCESS']:
        resp = make_response('SUCCESS')
        resp.set_cookie('password',str(data["password"]), max_age=60*60*24)
        resp.set_cookie('account',str(data["account"]), max_age=60*60*24) #将此命令发送至前端产生cookie，有效期为一天
        return resp
    if condition==result['MISS']:
        resp = make_response('MISS')
        return resp
    if condition == result['WRONG']:
        resp = make_response('WRONG')
        return resp
    if condition == result['ATTENDED']:
        resp = make_response('ATTENDED')
        return resp

#从数据库中得到题目数据并给前端
#GET：题目，选项*4
#存入数据库：题目ID，答案
@app.route("/test",methods=['GET'])
def test():
    check_cookie()
    Qid = request.args.get("Qid") #获取前端题号以判断题型
    return_data = return_Question(Qid)
    resp = make_response(json.dumps(return_data))
    return resp

#提交后保存用户数据并返回分数结果
#POST：用户答案
#存入数据库：用户答案，分数
@app.route("/submmit",methods=['POST'])
def submmit():
    check_cookie()
    request_data = request.get_data().decode('utf-8')
    answer = json.loads(request_data)
    return get_grade(answer)

#显示用户答题情况
#GET：题目，选项*4，答案，用户答案
@app.route("/answer",methods=['GET'])
def answer():
    check_cookie()
    answer = request.args.get("id") #获取前端题号提取对应题目
    return get_answer(answer)